package com.ruoyi.drugSystem.service.impl;



import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.drugSystem.domain.SysDrugInfo;
import com.ruoyi.drugSystem.mapper.SysDrugInfoMapper;
import com.ruoyi.drugSystem.service.ISysDrugInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 努力的派大星
 * @version 1.0
 */

/**
 * 药品种类信息 服务层处理
 *
 * @author ruoyi
 */
@Service
public class SysDrugInfoServiceImpl implements ISysDrugInfoService
{
    @Autowired
    private SysDrugInfoMapper drugInfoMapper;



    /**
     * 查询药品种类信息集合
     *
     * @param drugInfo 药品种类信息
     * @return 药品种类信息集合
     */
    @Override
    public List<SysDrugInfo> selectDrugInfoList(SysDrugInfo drugInfo)
    {
        return drugInfoMapper.selectDrugInfoList(drugInfo);
    }

    /**
     * 查询所有药品种类
     *
     * @return 药品种类列表
     */
    @Override
    public List<SysDrugInfo> selectDrugInfoAll()
    {
        return drugInfoMapper.selectDrugInfoAll();
    }

    /**
     * 通过药品种类ID查询药品种类信息
     *
     * @param drugInfoId 药品种类ID
     * @return 角色对象信息
     */
    @Override
    public SysDrugInfo selectDrugInfoById(Long drugInfoId)
    {
        return drugInfoMapper.selectDrugInfoById(drugInfoId);
    }



    /**
     * 校验药品种类名称是否唯一
     *
     * @param drugInfo 药品种类信息
     * @return 结果
     */
    @Override
    public boolean checkDrugInfoNameUnique(SysDrugInfo drugInfo)
    {
        Long drugInfoId = StringUtils.isNull(drugInfo.getDrugdetailedinfoId()) ? -1L : drugInfo.getDrugdetailedinfoId();
        SysDrugInfo info = drugInfoMapper.checkDrugInfoNameUnique(drugInfo.getDrugdetailedinfoName());
        if (StringUtils.isNotNull(info) && info.getDrugdetailedinfoId().longValue() != drugInfoId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 校验药品种类编码是否唯一
     *
     * @param drugInfo 药品种类信息
     * @return 结果
     */
    @Override
    public boolean checkDrugInfoCodeUnique(SysDrugInfo drugInfo)
    {
        Long drugInfoId = StringUtils.isNull(drugInfo.getDrugdetailedinfoId()) ? -1L : drugInfo.getDrugdetailedinfoId();
        SysDrugInfo info = drugInfoMapper.checkDrugInfoCodeUnique(drugInfo.getDrugdetailedinfoCode());
        if (StringUtils.isNotNull(info) && info.getDrugdetailedinfoId().longValue() != drugInfoId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }



    /**
     * 删除药品种类信息
     *
     * @param drugInfoId 药品种类ID
     * @return 结果
     */
    @Override
    public int deleteDrugInfoById(Long drugInfoId)
    {
        return drugInfoMapper.deleteDrugInfoById(drugInfoId);
    }

    /**
     * 批量删除药品种类信息
     *
     * @param drugInfoIds 需要删除的药品种类ID
     * @return 结果
     */
    @Override
    public int deleteDrugInfoByIds(Long[] drugInfoIds)
    {
        for (Long drugInfoId : drugInfoIds)
        {
            SysDrugInfo drugInfo = selectDrugInfoById(drugInfoId);
//            if (countUserDrugInfoById(drugInfoId) > 0)
//            {
//                throw new ServiceException(String.format("%1$s已分配,不能删除", drugInfo.getDrugInfoName()));
//            }
        }
        return drugInfoMapper.deleteDrugInfoByIds(drugInfoIds);
    }

    /**
     * 新增保存药品种类信息
     *
     * @param drugInfo 药品种类信息
     * @return 结果
     */
    @Override
    public int insertDrugInfo(SysDrugInfo drugInfo)
    {
        return drugInfoMapper.insertDrugInfo(drugInfo);
    }

    /**
     * 修改保存药品种类信息
     *
     * @param drugInfo 药品种类信息
     * @return 结果
     */
    @Override
    public int updateDrugInfo(SysDrugInfo drugInfo)
    {
        return drugInfoMapper.updateDrugInfo(drugInfo);
    }
}
